// 用户数据模块
import {
	getUrl,
	getWxSign
} from '@/api/userApi.js'
import {goInfos, goInfoToken} from "../../api/signApi";
const state = {
	token: uni.getStorageSync("token") || "",
	isLogin: uni.getStorageSync("isLogin") || false, // 是否登陆
	userInfo: uni.getStorageSync("userInfo") || {}, // 用户信息
}

const getters = {
	token: state => state.token,
	isLogin: state => state.isLogin,
	userInfo: state => state.userInfo,
}

const actions = {
	// 获取用户信息
	getUserInfo({
					commit,
				}, {token,path} ) {
		console.log("111=====userinfo",token,path)
		return new Promise((resolve, reject) => {
			console.log("=====userinfo",token)
			if(token){
				console.log("=====userinfo11",token)
				token && uni.setStorageSync('token', token)&& uni.setStorageSync('isLogin',true);
			}else{
				let params = {
					path:path,
				};
				getUrl(params).then(res => {
					let url = res.data.url
					console.log("url:", url)
					window.location.href = url
				})// 获取url参数
			}
		})
	},
	// 全局存储获取用户信息
	getUserInfoAll({
		commit,
		dispatch
	}, { path } ) {
		let token = uni.getStorageSync('token')
		console.log("=====userinfo",token)
		if(token){
			goInfos({token:token}).then(res => {
				console.log(res)
				if(res.code == 1){
					uni.setStorageSync('userinfo', res.data);
				}
			})
		}else{
			let params = {
				path:path,
			};
			// if(!uni.getStorageSync('isNofirst')){
				getUrl(params).then(res => {
					let url = res.data.url
					uni.setStorageSync('isNofirst','1')
					let codes =  decodeURIComponent((new RegExp('[?|&]code=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
					console.log('codes--------'+codes);
					if(!codes){
						window.location.href = url;
					}
					//debugger
					if(codes){
						goInfoToken(  {code:codes,path:path}).then(res => {
							console.log(res)
							if(res.code == 1&&!res.data.errmsg){
								uni.setStorageSync('token',res.data.userinfo.token)
								uni.setStorageSync('userinfo',res.data.userinfo)

								window.location.reload()
							}
						})
					}
				})// 获取url参数
			// }
		}
	},
getUrlKey(name) {
		return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null
		},
	yulan({
			  commit,
			  dispatch
		  }, item  ){
		getWxSign({
			url: encodeURIComponent(window.location.href.split('#')[0])// 注意：location.href
		}).then(res => {
			console.log("=======item",item);
			console.log(window.jWeixin, "window.jWeixin")
			console.log(window.wx, "window.wx")
			const u = navigator.userAgent,
			isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
			isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
			if(isAndroid){
				window.wx = window.jWeixin
			}
			var wx = window.wx ? window.wx : window.jWeixin;
			console.log(wx, "wx")
			// 步骤二：通过config接口注入权限验证配置
			wx.config({
				beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
				debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
				appId: res.data.qiye.corpid, // 必填，企业微信的corpID。公司的唯一标识‘ww20745c5e79cfa434’
				timestamp: res.data.qiye.timestamp, // 必填，生成签名的时间戳
				nonceStr: res.data.qiye.nonceStr, // 必填，生成签名的随机串，这里用的是自定义方法
				signature: res.data.qiye.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法 https://work.weixin.qq.com/api/doc/90000/90136/90506
				jsApiList: res.data.qiye.jsApiList, // 必填，需要使用的JS接口列表，凡是要调用的接口都需要传进来。所有JS接口列表见附录2
				success: function(res) {
					// 回调
					console.log("===========222成功")

				},
				fail:function(res){
					console.log("===========111失败")
				},
			});
			// 步骤三：通过ready接口处理成功验证。没有需要立即调用的api，可以不写
			wx.ready(function() {
				console.log("4444")
				wx.agentConfig({
					corpid: res.data.app.corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
					agentid: res.data.app.agentid, // 必填，企业微信的应用id （e.g. 1000247）
					timestamp:res.data.app.timestamp,  // 必填，生成签名的时间戳
					nonceStr:res.data.app.nonceStr, // 必填，生成签名的随机串
					signature: res.data.app.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
					jsApiList: res.data.app.jsApiList , //必填，传入需要使用的接口名称
					success: function(res) {
						if(item.type.indexOf('image')!='-1'){
							let arr = [];
							arr.push(item.url)
							console.log("===========222图片")
							wx.previewImage({
								current: item.url,
								urls:arr
							});
						}
						if(item.type.indexOf('application')!='-1'){
							console.log("===========222文件")
							wx.previewFile({
								url: item.url,
								name: item.name,
								size: item.size // 需要预览文件的字节大小(必填)
							});
						}

					},
					fail: function(res) {
						console.log("======reslog",res)
						alert('预览文件出错')
						if(res.errMsg.indexOf('function not exist') > -1){
							alert('版本过低请升级')
						}
					}
				});
			});
			// 步骤四：通过error接口处理失败验证
			wx.error(function(err) {
				console.log("333333")
				console.log("-======err",err)
			});
		});

	},
	downloadImg({
			  commit,
			  dispatch
		  }, item  ){
		getWxSign({
			url: encodeURIComponent(window.location.href.split('#')[0])// 注意：location.href
		}).then(res => {
			console.log("=======item",item);
			console.log(window.jWeixin, "window.jWeixin")
			console.log(window.wx, "window.wx")
			const u = navigator.userAgent,
				isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
				isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
			if(isAndroid){
				window.wx = window.jWeixin
			}
			var wx = window.wx ? window.wx : window.jWeixin;
			console.log(wx, "wx")
			// 步骤二：通过config接口注入权限验证配置
			wx.config({
				beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
				debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
				appId: res.data.qiye.corpid, // 必填，企业微信的corpID。公司的唯一标识‘ww20745c5e79cfa434’
				timestamp: res.data.qiye.timestamp, // 必填，生成签名的时间戳
				nonceStr: res.data.qiye.nonceStr, // 必填，生成签名的随机串，这里用的是自定义方法
				signature: res.data.qiye.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法 https://work.weixin.qq.com/api/doc/90000/90136/90506
				jsApiList: res.data.qiye.jsApiList, // 必填，需要使用的JS接口列表，凡是要调用的接口都需要传进来。所有JS接口列表见附录2
				success: function(res) {
					// 回调
					console.log("===========222成功")

				},
				fail:function(res){
					console.log("===========111失败")
				},
			});
			// 步骤三：通过ready接口处理成功验证。没有需要立即调用的api，可以不写
			wx.ready(function() {
				console.log("4444")
				wx.agentConfig({
					corpid: res.data.app.corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
					agentid: res.data.app.agentid, // 必填，企业微信的应用id （e.g. 1000247）
					timestamp:res.data.app.timestamp,  // 必填，生成签名的时间戳
					nonceStr:res.data.app.nonceStr, // 必填，生成签名的随机串
					signature: res.data.app.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
					jsApiList: res.data.app.jsApiList , //必填，传入需要使用的接口名称
					success: function(res) {
						if(item.type.indexOf('image')!='-1'){
							let arr = [];
							arr.push(item.url)
							console.log("===========222图片")
							wx.downloadImage({
								current: item.url,
								urls:arr
							});
						}
					},
					fail: function(res) {
						console.log("======reslog",res)
						alert('预览文件出错')
						if(res.errMsg.indexOf('function not exist') > -1){
							alert('版本过低请升级')
						}
					}
				});
			});
			// 步骤四：通过error接口处理失败验证
			wx.error(function(err) {
				console.log("333333")
				console.log("-======err",err)
			});
		});

	},
	handleWxConfig({ state,dispatch}) {
		getWxSign({
			url: encodeURIComponent(window.location.href.split('#')[0])// 注意：location.href
		}).then(res => {
			console.log(window.jWeixin, "window.jWeixin")
			console.log(window.wx, "window.wx")
			const u = navigator.userAgent,
				isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
				isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
			if(isAndroid){
				window.wx = window.jWeixin
			}
			var wx = window.wx ? window.wx : window.jWeixin;
			console.log(wx, "wx")
			// 步骤二：通过config接口注入权限验证配置
			wx.config({
				beta: true, // 必须这么写，否则wx.invoke调用形式的jsapi会有问题
				debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
				appId: res.data.qiye.corpid, // 必填，企业微信的corpID。公司的唯一标识‘ww20745c5e79cfa434’
				timestamp: res.data.qiye.timestamp, // 必填，生成签名的时间戳
				nonceStr: res.data.qiye.nonceStr, // 必填，生成签名的随机串，这里用的是自定义方法
				signature: res.data.qiye.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法 https://work.weixin.qq.com/api/doc/90000/90136/90506
				jsApiList: res.data.qiye.jsApiList, // 必填，需要使用的JS接口列表，凡是要调用的接口都需要传进来。所有JS接口列表见附录2
				success: function(res) {
					// 回调
					console.log("===========222成功")

				},
				fail:function(res){
					console.log("===========111失败")
				},
			});
			// 步骤三：通过ready接口处理成功验证。没有需要立即调用的api，可以不写
			wx.ready(function() {
				wx.agentConfig({
					corpid: res.data.app.corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
					agentid: res.data.app.agentid, // 必填，企业微信的应用id （e.g. 1000247）
					timestamp:res.data.app.timestamp,  // 必填，生成签名的时间戳
					nonceStr:res.data.app.nonceStr, // 必填，生成签名的随机串
					signature: res.data.app.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
					jsApiList: res.data.app.jsApiList , //必填，传入需要使用的接口名称
					success: function(res) {
					},
					fail: function(res) {
						console.log("======reslog",res)
						if(res.errMsg.indexOf('function not exist') > -1){
							alert('版本过低请升级')
						}
					}
				});
			});
			// 步骤四：通过error接口处理失败验证
			wx.error(function(err) {
				console.log("333333")
				console.log("-======err",err)
			});
		});
	}
}

const mutations = {
	token(state, payload) {
		state.token = payload;
		uni.setStorageSync("token", payload);
	},
	// 登录态
	isLogin(state, data) {
		state.isLogin = data;
		uni.setStorageSync('isLogin', data);
	},
	// 用户信息
	userInfo(state, data) {
		state.userInfo = data;
		uni.setStorageSync("userInfo", data);
	},
}



export default {
	state,
	mutations,
	actions,
	getters
}
